The present invention relates generally to bar code printing, and more particularly to bar code scanners and printers that can combine multiple images and multiple data strings into a single bar code, and then detect and utilize the bar code.
Bar code technology provides an accurate, easy, and inexpensive method of data storage and data entry for computerized information management systems. A properly designed bar code system can offer substantial improvements in productivity, traceability, and materials management, thereby yielding significant cost savings.
Typically, data is extracted from a 1D bar code symbol with an optical scanner that develops a logic signal corresponding to the difference in reflectivity of the printed bars and the underlying media (spaces). The serial data stored in the symbol is retrieved by scanning over the printed bars and spaces with a smooth, continuous motion. This motion can be provided by an operator moving a hand-held wand, by a rotating mirror moving a collimated beam of light, or by an operator or system moving the symbol past a fixed beam of light. The logic signal representing the bars and spaces supplied by the scanner is translated from a serial pulse stream into computer readable data by a decoder.
As the name implies, most bar codes comprise a series of black and light bars printed in accordance with a unique code that contains information across one dimension, so that data may be represented.
Multi-dimensional bar codes are also in use. For example, two-dimensional (2D) bar codes comprise stacked symbology or multi-row code. 2D bar code also refers to matrix code, which is formulated based on the position of black spots within a matrix. Each black element is the same dimension, and it is the position of that element that codes the data.
Ordinary 1D bar code is xe2x80x9cvertically redundant,xe2x80x9d meaning that the same information is repeated vertically. The heights of the bars can be truncated without any loss of information. However, the vertical redundancy allows a symbol with printing defects, such as spots, or voids, to still be read and decoded. For such codes, the higher the bar height, the more probability that at least one path along the bar code will be readable.
In contrast, a 2D code stores information along the height as well as the length of the symbol. Most 2D codes use check words to insure accurate reading. 2D code systems are practical where moving beam laser scanners, charge coupled device (CCD) scanners, and other comparable devices are available. 2D codes can also be read with hand held moving beam scanners by sweeping the horizontal beam down the symbol. However, reading a 2D symbol by sweeping a contact wand across the symbol has the normal criticality aspects of speed of sweep, resolution of the scanner, and symbol/reader distance.
2D codes were initially developed for applications where only a small amount of space was available for an automatic 1D symbol. However, with increased density of information storage with 2D and higher bar codes, the number of applications for such bar codes is multiplying. As an example of the advantages available from using 2D bar encoding, it is possible in the direct mail field to use 2D codes to store the name, address, and demographic information on the direct mail business reply cards. This larger amount of data in the 2D coding avoids the requirement to reference a remote database, thereby saving significant operational time. More specifically, in such direct mail applications, typically there is less than a 2% return from the mailing. If the return card is only coded with a reference number or access code to a remote database, the few returned cards must be checked against a very large database of potentially millions of names. This checking operation can be quite expensive in computer time.
However, if all of the important information is printed in the 2D code at the time the mailing label is printed, then there is very little additional cost, and a potential for great savings when the cards are returned, since the time and expense necessary to access the remote database is avoided. Similar savings can occur in field service applications where servicing data may be stored in a 2D symbol on the equipment. The field engineer uses a portable reader to obtain the information, rather than dialing up the home offices remote computer.
Briefly, in a method for forming a bar code consistent with the present invention an intermediate image is encoded based on a portion of a first image and a portion of a first data item. A portion of the bar code is encoded based on a portion of the intermediate image, a portion of a second image and a portion of a second data item.
In a further aspect of the invention, a method for decoding a bar code to form first and second images and first and second data items consistent with the present invention groups a predetermined number of pixels from the bar code into a block. The block is compared to a first table, and a portion of the first image, a portion of an intermediate image and a portion of the first data item is identified based on the comparison to the first table. The intermediate image is compared to a second table, and a portion of the second image and a portion of the second data item are identified based on the comparison to the second table. The first and second images and the first and second data items are formed based on the identified portions of the first and second images and first and second data items.